Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Разработка игр

Голые хипстеры и офисные битвы: что было на Dream Team

Что такое Dream Team

С первых минут на мероприятии я поняла, что никакие оды «особой атмосфере», «незабываемым эмоциям» и «командному духу» не выразят общее настроение лучше, чем одно слово. Dream Team — это кураж! 

Теперь наконец-то эмоции улеглись и я нашла время для отчета. Теперь по сути. Dream Team — мероприятие, где студенты окунулись в реальность, которая ждет их после выпуска. Они поделились на команды, и каждая разрабатывала свой филлер — это такие простенькие игры, которые помогают скоротать небольшие промежутки времени.

Организаторы постарались максимально приблизить все к реальности. В каждой из 11 команд собрались люди разной специализации, которые должны взаимодействовать, чтобы вытащить свой проект: проджект-менеджер, гейм-дизайнер, маркетолог, веб-дизайнер, графический дизайнер. Один человек обязательно был «на удаленке» и часто пропадал. Так что навыки коммуникации оттачивались в полевых условиях.

Процесс создания игры тоже проходил максимально реалистично: сначала исследование рынка, мозговой штурм — и только потом разработка. На мероприятии присутствовали преподаватели, которые помогали участникам на разных этапах и страховали от распространенных ошибок — например, напоминали, что разработку нельзя начинать с дизайна. Такая практика довольно распространена: успешные проекты на практике редко обходятся без опытных менторов.

В конце мероприятия команды презентовали свои игры. Мне больше всего запомнились две: в первой надо было на скорость одеть голого хипстера, во второй — участвовать в офисных склоках, разными способами сражаясь с коллегами. Например, заставляя крутиться на проходной или воруя у них еду из холодильника.

Кстати, насчет еды: на время мероприятия участники были обеспечены перекусами, водой и, главное, кофе! Был даже обед — правда, на него отвели всего 20 минут. Может, это и к лучшему: никто не успел расслабиться и потерять соревновательный дух.

Можно было и просто посетить лекции преподавателей, которые проходили параллельно с разработкой. Но и участвовать в командном проекте было очень интересно. В итоге все студенты разделились примерно пополам — на игроделов и слушателей.

О чем рассказывали на лекциях

Конечно, о геймдеве — о нем можно говорить очень много. Темы были подобраны так, чтобы лекции принесли пользу на разных этапах разработки проекта. Ниже — краткие заметки со всех шести выступлений. Наверняка я что-то упустила, поэтому дополняйте в комментариях!

Иоанн Павловский о гейм-дизайне настольных игр

Особенности игр-филлеров: быстрые партии, реиграбельность, простые правила, режимы на разное количество игроков. Филлеры убивают время между партиями в «настоящие» игры. Проблемы жанра — однообразие, излишняя простота.

Как сделать крутую карточную игру-филлер?

Отказаться от: 

  • коллекционных карточных игр, 
  • элементов классических игр, 
  • образовательных игр, 
  • бумажных денег, 
  • сильного влияния случайности, 
  • выбывания игроков, 
  • ходов, которые ничего не меняют.

Лучше избегать:

  • игр на двух игроков,
  • сложных правил,
  • очевидных стратегий,
  • исключений в правилах,
  • реализма,
  • множества комплектующих.

Хорошим идеям свойственны:

  • глубокие механики,
  • нелинейный баланс,
  • неординарность.

Важно знать свою аудиторию. Игры-филлеры популярны среди детей, офисных работников, семей, гиков.

Нужно тестировать игры — и чем раньше, тем лучше. Важно понимать эмоциональный отклик: что понравилось, что нет, сыграл бы человек еще? Основные критерии успеха игр: доступность правил, реиграбельность, взаимодействие игроков.

Данила Терсков о продвижении продукта

Основа digital-стратегии:

  • определение целей, ЦА и УТП;
  • формирование сообщения;
  • создание креативной стратегии (упаковки);
  • выбор каналов продвижения;
  • медиапланирование;
  • постановка и контроль KPI.

Важно понимать истинную цель, которую вы хотите достичь. Это могут быть новые клиенты или положительное сальдо сметы.

Формируя посыл для ЦА, нужно отталкиваться от ее ключевой потребности и того, как бренд может ее удовлетворить.

Креатив должен быть не просто ярким, а с понятной пользой.

Основные каналы продвижения: SEO, Yandex + РСЯ, Google + КМС, MyTarget, таргетированная реклама в Facebook + Instagram, таргетированная реклама в VK, реклама в YouTube, тизерная реклама, CPA-сети, еmail-рассылка, товарные агрегаторы.

Основные цели продвижения — Awareness (охват аудитории), Traffic (посещения, трафик), Interaction (вовлечение), Sales (продажи), Loyalty (лояльность). У целей разные метрики, и их много:

  • Awareness. Охват (Reach, Cover) — сколько представителей ЦА имели контакт с рекламой в рамках компании заданное число раз. KPI охвата: View — количество просмотров рекламного объявления; CPM (cost per millennium) — оплата за тысячу показов рекламного объявления; CPV (cost per view) — оплата за просмотр рекламы. 
  • Traffic. Хосты (посетители) — уникальные посетители сайта. Сеансы — общее число сеансов на сайте; CPC (cost per click) — сумма, которую рекламодатель платит за один клик по его рекламе; CPV (cost per visitor) — за одного посетителя. Это не одно и то же.
  • Interaction. Время, проведенное на сайте, — средний показатель в минутах. Глубина просмотра сайта — среднее число страниц, просмотренных за один сеанс (на одного посетителя). Engagement rate — коэффициент вовлеченности аудитории в публикации контента. 
  • Sales. Orders — количество оформленных заказов. Sales — количество совершенных продаж. CPO (cost per order) — средние затраты на получение заказа. CPS (cost per sale) — средняя стоимость продажи.
  • Loyalty. Retention rate (CRR) — коэффициент удержания клиентов. CRR = ( (E – N) / S) × 100. Где: (Е) — количество клиентов на конец периода; (N) — количество новых клиентов, приобретенных за период; (S) — количество клиентов на начало периода. Churn rate — коэффициент оттока. Грубая оценка: Churn rate = Ушедшие клиенты / Общее число клиентов. 

Mention — суммарное количество упоминаний бренда на чужих площадках. Passion — среднее количество упоминаний бренда одним автором. Net Sentiments Rate — разница между позитивными и негативными упоминаниями.

Из этих этапов продвижения формируется воронка продаж:

Иван Русов о конфликтах в команде

Конфликт складывается из причины и конфликтной среды. 

Возможные причины:

  1. Неправильное распределение зон ответственности. 
  2. Непонимание правил игры.

Чтобы избежать конфликтов, правила нужно составить до начала работы: «Не флудим в рабочем чате», «Договоренности нужно фиксировать после каждой встречи» и так далее.

Ставим цели по методике SMART: Specific (конкретные), Measurable (измеримые), Achievable (достижимые), Relevant (значимые), Time bound (определенные по времени). О возможном срыве дедлайнов нужно предупреждать, о косяках — говорить.

Илья Полянский о лендингах для игр, которые помогают влюблять и продавать 

Фольклор — колыбель референсов. Вдохновиться можно русскими народными сказками или архетипами Юнга.

Нужно вызывать у пользователя яркие эмоции и приятные ассоциации! Например, вот так:

Сергей Тиджиев о работе с цветом, графикой и шрифтами

Сергей раскрыл тему цвета, графики и шрифта на примере разработанной им крутейшей книги-игры. Там вы выступаете в роли иммигранта, который переехал в другой город. Нужно адаптироваться в нем и умело выходить из сложных ситуаций — для этого есть небольшой запас денег. Так погрузилась в лекцию, что записала только это: «Хочу книгу серии „ПРИВЕТ СТРАНА“!»

Сергей Илюхин о логике презентаций

Структура презентации: заглавный слайд, бэкграунд, драма, идея, детали идеи, RTB (Reasons to believe), чего ждать.

Заглавный слайд — обложка, по которой будут судить о всей презентации. Красивые картинки — это важно. Бэкграунд — ответ на вопросы: 

  • какая задача?
  • почему вы над ней работаете?
  • как сейчас ситуация на рынке?
  • что делают конкуренты?

Драма дает вывод из бэкграунда и показывает, почему важно решить задачу. Пример драмы: «Игра — это серьезно! Почему тогда награды заслуживают только киберспортсмены, а не обычные геймеры?».

Идею и решение нужно описать максимум в трех предложениях! На каждый этап деталей — один слайд. В качестве RTB хорошо работают иконки и убедительные подписи. Важно сделать слайд о том, что случится, если вашу идею реализуют — как вы измените мир?

Закончить нужно красиво и без «спасибо». Финальный слайд — забавная фраза, которая обобщает всю презентацию.

Впечатления участников

Все студенты геймдев-факультета GeekUniversity, которые участвовали в Dream Team, согласились, что было суперполезно включиться в настоящую командную работу, где у каждого есть своя зона ответственности. А чего всем не хватило, так это времени. Кому-то на разработку, а кому-то — на обед.

Пройти обучение

29 окт 19, 11:47
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Изучение Unity в GU, лучшие assets и паблики — мнение декана

Декан факультета разработки игр Илья Афанасьев отвечает на вопросы о движке, его преподавании в GU и о себе.

— Илья, почему ты выбрал Unity, а не Unreal или еще что-то? Зачем начинать именно с этого движка?

— Начинал я как раз с Unreal Engine, но это было давно — тогда он был известен как UDK (Unreal Development Kit). Новичку работать с ним было очень сложно: на поверхности все просто, но, заглянув «под капот», просто теряешься. 

Среда работала недостаточно стабильно, особенно в руках людей, которые только начали ее изучать. Скрипты приходилось компилировать в сторонних программах. Даже сейчас Unreal известен как мощный, но очень громоздкий инструмент, который с лету не освоишь. Да, там есть Blueprint (раньше Kismet), но досконально понять, как это работает, сложно. Например, чтобы максимально эффективно использовать blueprints, нужно понимать их природу — а значит, неплохо программировать. Особенность движка Unreal в том, что он удобен, пока вы не особо заморачиваетесь, но становится бичом для тех, кто еще не понимает природу ООП и основ программирования.

Если у человека нет опыта разработки, Unity3D — входной билет в геймдев. С этим движком легко программировать и творить свои миры: не осилит его только ленивый. По графике и разнообразию инструментов Unreal впереди, но, я вас уверяю, в умелых руках Unity способен на потрясающие штуки, такие как Unity Adam или Book of the Dead. А без умения и на Unreal далеко не уедешь.

— Что происходит с движком сейчас и как он менялся в последние несколько лет? 

— Он активно перестраивается: многие технологии буквально пишутся заново. Unity Tech реализовали возможность создания шейдеров через графический интерфейс. Раньше для этого приходилось устанавливать сторонние платные дополнения. 

Изменилась система визуализации трехмерной графики, которую называют графическим конвейером. Теперь разработчик может сам настраивать ее и определять, насколько качественно и с какой затратой ресурсов движок будет отрисовывать 3D в проекте.

Также Unity Tech перестроили многопользовательскую систему на базе технологии ECS. Это позволит разработчикам оптимизировать сетевые приложения без «костылей».

Я могу долго продолжать, потому что изменений множество: команда Unity постоянно что-то придумывает и добавляет. Даже сейчас, пока мы беседуем, они наверняка готовят нечто грандиозное.

Еще три года назад ситуация была иной: Unity развивался сравнительно медленно и глобальными нововведениями баловал нас редко. Все изменилось, когда в компанию пришел новый исполнительный директор Джон Ричителло. Как только он освоился, сообщество почувствовало разницу — стало ясно, что Unity будет всерьез конкурировать с другими движками.

— Чему должен в первую очередь научиться будущий разработчик игр? И чем ты руководствовался, когда составлял учебный план факультета?

— Мы ориентировались на две категории студентов: тех, кто идет устраиваться в игровую студию программистами, и тех, кто хочет делать инди-игры своими силами, небольшой командой.

Поэтому мы учим программированию на C#, гейм-дизайну, работе с Unity и даже основам 3D-моделирования. Мы подробно рассказываем об этапах разработки игр, чтобы студенты представляли себе весь процесс и впоследствии могли лучше взаимодействовать с коллегами. Это целая наука. Одно дело написать код игры, и совсем другое — сделать ее интересной. Принципиально разные умения.

Я общался с дизайнерами и разработчиками из крупных игровых студий и сделал вывод, что им сложно ориентироваться за рамками своей компетенции. Они не до конца понимают, как устроена работа в других отделах, и это усложняет взаимодействие. Можно много лет программировать игры или рисовать графику, но не видеть общей картины.

С этой проблемой сталкиваются и большие, и маленькие организации. Например, художник по 3D-моделям и программист мыслят разными категориями. Им сложно договориться, как упростить друг другу жизнь и оптимизировать графику в игре. Из-за этого даже появилась отдельная профессия — технический художник. Он помогает художникам и программистам лучше понять и реализовать замысел гейм-дизайнера. 

— То есть вы готовите разработчика, который знаком с полным циклом создания игры и может сделать все с нуля? Проработать концепцию, написать код, построить игровые уровни и грамотно сформулировать задачу художнику?

— В теории да, мы даем всестороннее базовое понимание создания игр, чтобы студент знал, кто и чем должен заниматься в команде, либо мог сам развиваться в интересной для себя сфере. Но наша первостепенная задача — чтобы выпускники могли трудоустроиться как Unity-разработчики, программисты. Остальное — полезные дополнения, которые помогают ориентироваться в профессии и смежных областях, а значит, ускоряют карьерный рост.

Надо понимать, что для создания серьезного проекта с нуля нужны большие деньги и опыт. Мы даем базу, чтобы студенты на первых же проектах не шли ко дну из-за нелепых детских ошибок.

Теоретическое понимание, как все устроено, позволяет изначально выбирать верное направление действий и обходить минные поля.

В принципе наш выпускник может и контент создать для своей игры, но акцент не на этом (лучше привлечь дизайнеров, художников, звукорежиссеров), а на проектировании и технической реализации игры.

— Для каких задач ты сам используешь Unity?

— Откровенно говоря, для всего в своей жизни. Нужно спроектировать новый дом — Unity, спроектировать вольер для собаки — Unity, прикинуть расстановку мебели — снова он. И, конечно же, это мой инструмент заработка.

Сначала я занимался фрилансом, потом объединился с коллегами — мы создали Game Line Studio и начали разрабатывать приложения на заказ: в основном AR и VR. 

Сейчас мы делаем на энтузиазме мобильную игру, с которой хотим выйти на рынок, чтобы официально закрепиться как GameDev-компания и завязать с разработкой приложений. В нашу команду входят и преподаватели, и студенты-выпускники GeekBrains.

Сюжет нашей игры прост: три героя сражаются со злом, которое вторглось в этот мир из подземелий древнего города. Герои отличаются по цвету (красный, синий, зеленый — RGB-отряд). Каждый атакует только противников своего цвета. Игроку нужно правильно расставить персонажей, чтобы они справились с очередной волной чудовищ. Чтобы перемещать героев, их нужно вращать по часовой стрелке или против нее.

Мы выбрали не очень простой в исполнении стиль 3D-графики, и у нас возникли большие трудности с контентом, но сейчас мы близки к финишной прямой. Уверен, игра найдет своего издателя и выйдет на рынок.

— Ты сказал, что ваша студия занимается приложениями для шлемов виртуальной реальности. Расскажешь чуть подробнее?

— Самый крутой наш проект такого плана — тренажер для Международного центра подготовки спасателей. К сожалению, детали раскрыть не могу из-за договора о неразглашении (non-disclosure agreement). Но это был невероятно интересный новый опыт. Проект очень амбициозный: если у заказчика все получится, он может произвести революцию в своей области.

— А как тебе реализация AR и VR в Unity? Насколько это удобно?

— Unity использует пакеты инструментов (SDK) от производителей шлемов виртуальной реальности (HTC, Oculus) и устройств дополненной реальности. С такими же пакетами работают и другие движки, поддерживающие AR/VR. Но я заметил забавную вещь. 

Новички выбирают Unity из-за простых настроек, а более уверенные в своих силах начинающие разработчики сначала берутся за Unreal, но со временем возвращаются к Unity, потому что он удобен и не перегружен лишними инструментами. Проще отследить, где что лежит, какие ресурсы используются и так далее. В Unreal для кастомизации приходится ориентироваться в огромном арсенале средств, спрятанных «под капотом».

— У движков с поддержкой двух- и трехмерной графики обычно одно направление в приоритете, а второе «тоже есть». Насколько Unity хорош для работы с 2D? Если я хочу сделать двухмерную игру с крутыми графическими эффектами, надо ли осваивать специализированный 2D-движок?

— Движок называется Unity 3D и, естественно, он ориентирован в первую очередь на трехмерные проекты. Но его возможности в 2D перекрывают абсолютное большинство вещей, которые тебе когда-либо понадобятся. Специализированные движки могут быть глубже оптимизированы под 2D, однако им не обойти Unity по разнообразию и удобству инструментов.

Чтобы понять, насколько красивыми могут быть двухмерные игры на Unity, достаточно взглянуть на Ori and the Blind Forest, Forgotten Anne или Children of Morta. The Heart Stone демонстрирует удивительную игру теней, которая может заставить игрока думать, что он находится в полном 3D. Отчасти это и правда так (в Unity все находится в 3D-пространстве, даже 2D-объекты), но на других движках ты не создашь подобных эффектов с такой легкостью.

Если ты знаешь Unity и хочешь быстро сделать 2D-игру с качественной графикой, смысла учить отдельный движок нет.

— Порекомендуй лучшие Unity Assets (расширения и наборы ресурсов) для разных задач, пожалуйста. Твой «топ-лист».

— Среди лучших платных ассетов юнити я бы отметил:

  1. Gaia — генератор ландшафтов.
  2. Cascade — генератор рек, озер и водопадов.
  3. Ассеты серии Obi от Virtual Method — симуляторы тканей, воды, веревок.
  4. Winter Forest Environment — набор фотограмметрических моделей окружения.
  5. Ассеты для Unity от kripto289 — крутые наборы эффектов.
  6. Наборы от Polygon Blacksmith — прикольные низкополигональные модельки.
  7. Ассеты от Manufactura K4 — убойные наборы окружения для игр с видом сверху.
  8. Mesh Baker — инструмент оптимизации 3D-сцен.

Список, конечно, можно дополнять — в магазине вы найдете еще много достойного. Но я для себя выделил вот эти вещи, сам пользуюсь большинством из них и ничуть не разочарован.

Лучшие бесплатные Assets для Unity:

  1. Hand Painted Forest Environment Free Sample — отличный набор рисованных лесных текстур.
  2. Ассеты от Polygon Blacksmith — среди них есть несколько бесплатных.
  3. Palace of Orinthalian — неплохой набор с домиком на болоте.
  4. Unity Recorder — позволяет записывать видео игрового процесса в Unity.
  5. Zenject Dependency Injection — инструмент (фреймворк) для управления зависимостями в Unity-проекте.
  6. UniRx — реактивное расширение для реализации асинхронных и многопоточных вычислений.
  7. Unity Anima2D — официальный плагин с открытым кодом (C#) для движка версии 5.x и выше. Упрощает создание и редактирование 2D-анимации, в том числе за счет привязки спрайтов к скелету («костной анимации»).
  8. Free Asset — 2D Handcrafted Art — пакет двухмерных спрайтов окружения.
  9. Free Rocks — набор из четырех камней и одной скалы для создания окружения.
  10. Mega Fantasy Props Pack — набор объектов для средневекового игрового окружения.

Также советую обратить внимание на бесплатные ассеты для Unity 3d и не только от Unity Technologies: они очень крутые и заслуживают внимания. Лучше скачать все, что у них есть, а затем пробовать и разбираться.

Опять же, классных бесплатных ассетов гораздо больше, чем в списке. Я назвал только те, что у меня на примете. 

— Насколько легко или трудно создавать и продавать свои наборы ресурсов для Unity? Если эта тема тебе знакома и интересна.

— По моим наблюдениям, пристроить уникальный контент в магазин Unity Assets не так уж сложно и заработать на этом реально. Едва ли продажа ассетов для юнити может стать основным источником дохода на долгое время, но небольшой пассивный заработок вы получите.

Один из моих учеников (ему 16 лет) уже нарисовал несколько наборов спрайтов. Думаю, это под силу любому, кто действительно поставил перед собой цель. Главное — качество. Если ты предлагаешь интересные и ходовые ассеты, решаешь задачи, с которыми сталкиваются многие разработчики, — все будет отлично.

— Какие проекты делают студенты факультета разработки игр в GeekUniversity?

— Один из проектов, которые «выстрелили», — коммерческий продукт для застройщиков от команды Project X. Приложение позволяет в виртуальной либо смешанной реальности прогуливаться по земельным участкам, чтобы планировать будущее расположение дома и объектов. Ребята уже нашли инвестора и начали восполнять свои затраты на обучение. Кстати, эта команда набирает студентов на подработку.

Игровые проекты — очень разноплановые. Здесь и уникальный пошаговый 2D-платформер, и железнодорожный survival-action с элементами экономической стратегии. Обе вещи — в постапокалиптическом антураже.

Атака на поезд в игре The Last Hope от команды Limerence Games

Также есть оригинальный tower defence про котиков и фэнтезийный roguelike, где надо вырезать орды нечисти и прокачивать свою крепость.

 

Арт врага из «рогалика» Tomorrow’s Hero от команды Brave Team

Как правило, мы ориентируем студентов на создание собственной студии и поиск издателей. В такой ситуации разработчику часто приходится переступить через свое эго и писать мобильные приложения. Это кратчайший путь, потому что мобильные решения на Unity в России пока востребованы больше, чем десктопные. Но я никогда не призываю студентов браться за неинтересное для них дело. На курсе командной разработки в GeekUniversity ограничений нет: здесь разрабатывают игры и приложения как для мобильных платформ, так и для PC. 

А поскольку студенты у нас амбициозные и позитивные, в поисках своей ниши они не всегда подстраиваются под рынок и готовы идти против течения. Вместо того чтобы копировать известные хиты и пытаться повторить чужой успех, они стремятся прокладывать свою дорогу. У одних это получается отлично, другие набивают шишки, но ценный опыт извлекают все.

— Ты рассказываешь как человек, вовлеченный во все это. Как строится твое взаимодействие со студентами?

— Во время командной разработки студентов поддерживают сразу три преподавателя: Роман Муратов помогает с code review и архитектурой проекта, гейм-дизайнер подсказывает, как сделать игру интересной, а я выступаю в роли project manager’а и слежу, чтобы получился минимально жизнеспособный продукт, который можно показать инвестору. Еще я рассказываю, какие фичи стоит и не стоит делать, что можно и нельзя говорить инвестору, как правильно построить презентацию для лиц, принимающих решение.

— Игры, которые ты перечислил, все однопользовательские. Но в учебной программе есть и мультиплеер.

— Да. Чтобы раньше времени не искушать ребят мультиплеером, его изучение начинается уже после командного проекта. Я специально так сделал, потому что создание многопользовательской игры требует особых навыков. Проект нужно грамотно спроектировать, чтобы игровой процесс был интересным, честным и уникальным. Даже если взять за основу чужую игру и попытаться скопировать, возникнет куча проблем. Кроме того, нужно уметь писать и оптимизировать сетевой код.

— Что еще губит игровые проекты?

— Помимо мультиплеера есть еще 3D-графика и разработка большой сюжетной AAA-игры. И то и другое требует огромных денег. Энтузиазм длится не больше двух-трех месяцев, и если за это время вы не успеваете выпустить игру, это заканчивается печально для проекта.

Пожалуй, 3D-графика — самое страшное, что может случиться с проектом. Когда наша студия взялась за трехмерную игру, мы рассчитывали на самый аскетичный набор контента: вид локации сверху и персонажи — всё. В игре нельзя перемещаться по уровню, исследовать его и произвольно двигать камеру. Тем не менее тащить этот проект нелегко, потому что мы не можем делать контент. В команде шесть художников, но все «тридешники» разбежались. Полный цикл создания одной 3D-модели, включая работу аниматоров, стоит около 150 000 ₽. И все же мы преодолеваем трудности — совсем чуть-чуть и доведем игру до релиза.

Кстати, по итогам наших проб и ошибок я скоро опубликую на «Пикабу» статью: почему не стоит делать 3D-игру, если у вас нет лишнего миллиона в кармане.

Ну а если начинающий разработчик решит создать 3D-шутер класса AAA с мультиплеером, на проекте можно уверенно ставить крест еще до старта. Даже при достаточном бюджете сделать такое без серьезного опыта невозможно. Это задача для больших компаний. 

— Какие YouTube-каналы и ленты в соцсетях стоит отслеживать изучающим движок Unity?

— Из YouTube советую:

  1. Nevosoft
  2. DevGAMM
  3. Официальный канал Unity
  4. Sebastian Lague
  5. Brackeys 
  6. Unity3D College
  7. Школа разработки игр

Из групп «ВКонтакте»:

  1. DTF
  2. Игромания
  3. Unity User Group
  4. Unity3D & CG / Unity 3D

А еще на «Пикабу» есть «Лига разработчиков видеоигр» — на их сообщения тоже стоит подписаться.

Ну и, пользуясь случаем, приглашаю всех на наш канал в Discord, где мы собираем желающих разрабатывать игры: от художников до программистов. 

— Спасибо! Последний вопрос, как всегда, к читателям. Что еще вы хотели бы узнать по теме? И есть ли у вас планы делать свою игру на Unity? 

Скоро опубликуем обзор проектов, над которыми работают студенты GeekUniversity, — с артами, скриншотами и комментариями авторов.

Пройти обучение

31 июл 19, 17:12
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Бесплатные ресурсы для ваших игр

Когда несколько месяцев назад вышел перевод статьи «В гейм-дизайнеры с нуля», в комментариях предложили сделать большой обзор полезностей и бесплатных ресурсов для разработчика игр. Сегодня такой материал перед вами. 

Искать лучшие ресурсы мне помогал Владимир Михайлов — энтузиаст инди-разработки, автор музыки и звукового оформления к играм Dragon’s Dungeon, Quest Hunter, One Helluva Day. Мы постарались охватить разные направления: от готовой к использованию графики и музыки до сообществ, где можно попросить совета и найти соавторов. 

Пост будет длинным. Начинаем!

Наборы материалов (Assets)

OpenGameArt.Org — один из самых известных сайтов с бесплатными игровыми ресурсами, доступными как Creative Commons. Но я хочу отметить раздел Collect. Готовые тематические подборки очень экономят время. Вот набор тайлов для изометрической игры и коллекция «изометрических» персонажей, как альтернатива программам по созданию персонажей. А вот вам пиксель-арт и графика в стиле NES и Game Boy.

Сайт автоматически генерирует сводные списки элементов коллекции, где для каждого файла указаны автор, лицензия и другие детали. Не придется вручную собирать данные о находках. Главное — проверить авторство графики перед релизом игры, чтобы никого не забыть. Это легко: для любого файла в списке указана еще и ссылка на страницу, откуда он взят.

Сraftpix, раздел Freebies — более 80 бесплатных пакетов 2D-графики для RPG, стратегий, аркад, платформеров и других типов игр. Тайлы, персонажи, GUI, иконки, фоны.

Open Game Graphics — гора плюшек для 2D-игр. Помимо дизайна интерфейсов, персонажей и уровней можно скачать 25 полных коллекций графики под игру конкретного жанра и антуража: мрачный Sci-Fi-платформер, красочный Top-down shooter, 8-битный рогалик и так далее. Много спрайтов в мультяшном стиле.

PixelGameArt — фэнтезийные и Sci-Fi-ассеты в стиле пиксель-арт с возможностью предпросмотра демок в браузере!

Персонажи и часть фона из набора GothicVania Town. Онлайн-демо

Kenney — поставщик игровых ресурсов и редакторов для создания игр, который предлагает около 60 бесплатных наборов ассетов, в том числе тайлы, изометрические спрайты, шаблоны-конструкторы для персонажей и построек, 3D-модели, музыку и звуки, элементы UI.

GameDevMarket — ярмарка ресурсов, созданных пользователями. Есть и уютный уголок «халявы». Чтобы попасть туда, откройте интересующий раздел (например, 2D > Characters) и в колонке слева выберите Type > Free.

Game Developer Studio — более 100 бесплатных 2D-ассетов, которые можно отфильтровать в магазине по принципу «сначала дешевые». Автор сайта и всех материалов — Роберт Брукс. Вы можете отправлять ему идеи нового контента и голосовать за чужие предложения в разделе Suggest an asset.

Game assets на itch.io — золотые россыпи 2D- и 3D-графики для ваших игр. Тысячи ассетов от участников сообщества. Много красивого пиксель-арта, выразительные персонажи, детализированные тайлы карт и уровней. Никакой рекламы на страницах. Именины сердца!

Renpy для чайников — русскоязычный блог с полезностями для тех, кто делает визуальные новеллы на движке Ren’Py. Скрипты, мини-игры, спрайты, нестандартные меню, GUI.

А теперь посмотрим на более узконаправленные сайты и сервисы.

3D-графика

Трехмерный контент — одно из уязвимых мест в проекте начинающего игродела. Объектов нужно много и хороших, а бюджета нет или не хватает. Сейчас расскажу, где брать качественные модели, в том числе анимированные или полностью готовые к анимации. 

Мы говорим о бесплатных ресурсах для игр и инструментах, поэтому ориентироваться будем прежде всего на Blender и его сообщество. 

BlendSwap

Этот портал — моя первая остановка в поисках годного 3D. Тут собраны модели всех типов: персонажи, интерьеры, архитектурные сооружения, транспорт, оружие, одежда, еда, готовые сцены и пейзажи. Плюс низкополигональные меши, риги для скелетной анимации, текстуры и материалы, эффекты на основе частиц, node-заготовки для Blender, настройки стилей визуализации, скрипты на Python. 

Все ресурсы — с лицензией Creative Commons. Причем очень многие энтузиасты выбирают CC0, по которой полностью отказываются от авторских прав.

Сайт-редактор для создания игр, который не лишен недостатков: с бесплатным аккаунтом можно скачивать лишь 20 моделей в месяц. Поэтому все, что приглянется, лучше собирать в коллекции. Одна формируется автоматически — это история ваших лайков. Вторую вы заполняете сами по любому принципу. Можно сосредоточиться на теме работ или конкретной лицензии. 

Если аккаунт не премиальный, придется ограничиться двумя коллекциями или хранить все в закладках браузера. 

Только не затягивайте со скачиванием. После длительного отсутствия на сайте я однажды обнаружила, что мои коллекции опустели в результате то ли сбоя, то ли плановых мероприятий администрации. Из общего списка пустых пользовательских коллекций на сайте я поняла, что явление было массовым. 

Несколько интересных BlendSwap-аккаунтов:

  • izuzf — много оружия разного типа и разных эпох, персонажи, в том числе low poly.
  • Daren — персонажи, в том числе с полным ригом и лицензией CC0. Например, вот.
  • tastyfish — три набора объектов и декораций для RPG в мультяшном стиле плюс оружие. Лицензия — CC0.
  • Mutte — монстры, зомби, прочие враги и военная техника. 

  • RedFrost — 47 заготовок для игрового движка Blender Game Engine по лицензии CC0.
  • Коллекция пользователя JerryJury — 1000 роскошных моделей, с большинством которых можно делать что угодно. Бытовые мелочи, техника, оружие, боевые роботы, эффекты для Blender.
  • Коллекция papasmrfe — тут много симпатичных персонажей.

Другие сайты с 3D

ShareCG — основанный в 2007 году сервис, куда любители и профессионалы компьютерной графики загружают свой контент. Помимо бесплатных 3D-моделей, текстур и материалов, здесь есть стоковые фотографии, уроки, скрипты, программы и плагины для CG-творчества, музыка.

Thingverse — сообщество любителей 3D-печати, где можно найти оригинальные модели по лицензиям Creative Commons.

Текстуры

СС0textures — 529 реалистичных PBR-текстур, которые можно использовать где и как угодно без ссылок на авторов. Без регистрации. На всякий случай: PBR (Physically-Based Rendering) — это физически корректная визуализация. Варианты разрешения текстур: 2K, 4K, 8K. А еще можно скачать исходники в формате .sbsar — для редактирования в программе для создания дизайна игр Substance Designer.

TextureLibt — коллекция из 6500+ текстур для личных и коммерческих целей. Все это работы одного фотографа. Он просит вас о малости: не перепродавать его материалы и, по возможности, при использовании текстур указывать авторство.

Texture — большая коллекция текстур разного, но в среднем невысокого разрешения (примерно 1000–1300 пикселей по ширине). Условия: можно использовать в платной игре, но нельзя продавать сами текстуры (даже после редактирования) и выдавать их за свои.

Стоковые изображения

Stock Graphic Designs, раздел Freebies — наборы профессионально исполненных векторных изображений для коммерческого и личного пользования. Форматы: Ai (Adobe Illustrator) и EPS.

Рixabay, Pexels и Unsplash — я поставила их в один ряд, потому что эти три банка фотографий очень похожи. Они держатся на материалах от участников сообщества и на заимствованиях с аналогичных сайтов. Все бесплатно, в том числе для коммерческих проектов.

Поиск по DeviantArt

На портале DeviantArt, где обитают любители визуального искусства, среди тонн авторского контента можно найти бесплатные спрайты, 3D-модели и фотографии. Особенно много здесь фанатов аниме и пиксель-арта. Но далеко не все полезное попадает в раздел Resources & Stock Images. Вот несколько советов, которые экономят время на поиск ресурсов.

Следите за группами, которые раздают бесплатное. Примеры:

Game-Art — группа целиком посвящена игрострою. Здесь можно посмотреть, что делают другие, показать свои арты и концепты, запросить критику участников, а еще — скачать игровые ресурсы из раздела Resources & Tutorials. Будьте внимательны: не все можно использовать в коммерческих проектах. О правовых нюансах еще скажу ниже.

Clear-Cut — изображения объектов и персонажей на прозрачном фоне в форматах PNG и PSD. Здесь и аккуратные вырезки из фотографий, и рендеры 3D-моделей.

Safe-Stock-Resources — большой фотосток с изображениями людей и природы. Отличный опорный материал для создания фонов и персонажей. Заявленная цель группы — собрать надежных авторов, чей контент можно использовать, не боясь, что он был где-то украден.

NoCreditStock — наборы материалов, которые можно использовать без упоминания автора.

Digital-Art-Club/Stocks and resources — бесплатные материалы и уроки по Digital Art.

Ориентируйтесь по хештегам. Залежи бесплатного добра вы найдете по тегам #unrestricted, #commons, #freetouse, #freesprites, #freebackgrounds, #freeresource, #freebies и другим. Экспериментируйте и обращайте внимание на теги к работам, которые вам нравятся.

Просматривайте чужие коллекции. Сайт подсказывает подходящие в колонке справа, когда вы ищете по тегам.

Любителям визуальных новелл пригодится вот эта подборка фонов и спрайтов для некоммерческого использования.

Ищите работы с лицензией Creative Commons через Google. Введите в поисковик: 

"This work is licensed under a Creative Commons" site:deviantart.com

В списке результатов перейдите на вкладку «Картинки». Получилось! Если что-то нравится — переходим на страницу изображения и уточняем лицензию и авторство непосредственно под картинкой или под заголовком License в блоке справа.

Помните: у большинства групп на DeviantArt нет единых правил пользования изображениями. Каждый участник сам придумывает, что можно и нельзя делать с его работами. Я видела художницу, которая разрешает брать спрайты для коммерческих проектов только при условии, что вы пришлете ей бесплатную копию своей игры :) 

Хорошая практика: если вы что-то взяли, упомяните автора в титрах и пришлите ему ссылку на игру либо скриншоты. Пусть полюбуется, как вы использовали его материалы.

Иконки

Game-Icons — сервис, где можно не только быстро найти подходящую иконку по тегу и названию, но и тут же отредактировать ее прямо в браузере и сохранить как SVG или PNG. Замечательно!

Iconmonstr — тысячи бесплатных черно-белых иконок для оформления мобильных и онлайн-приложений, сайтов, игр.

Шрифты

Ищем бесплатные шрифты на DaFont

Звук и музыка

GameAudioGDC Bundle — гигабайты аудио, записанного профессионалами, — для любых ваших проектов, в том числе коммерческих. Это щедрый подарок, который игроделы ежегодно получают по случаю Game Developer’s Conference. До сих пор объем «бандла» увеличивался с каждым годом. Выпуски:

FMA — интерактивная библиотека музыки и звуков, пополняемая кураторами со всего мира. Материалы публикуются с лицензиями Creative Commons.

FreeSound — огромная база бесплатного аудио от участников сообщества. Можно вести коллекции. Основатели проекта, Music Technology Group, — исследователи из Университета имени Помпеу Фабры (Барселона). 

Программы и утилиты для создания компьютерных игр

Для работы с 3D

Онлайн-конструктор 2D-персонажей для классической японской RPG (JRPG).

Synfig — отличный бесплатный редактор для создания игр и 2D-анимации для Windows, Linux и MacOS. Поддерживает скелетную анимацию, что избавляет от необходимости вручную перерисовывать позу персонажа из кадра в кадр. Программа автоматически рассчитывает преобразование исходной векторной формы в конечную. Вы можете  использовать разные типы слоев и эффектов и управлять их характеристиками.

Еще два популярных решения для 2D-анимации. Оба open-source и доступны под Windows и OS X:

Inkscape — бесплатный векторный редактор № 1. Приложение из тех, о которых все знают, но нельзя не сказать.

GIMP — редактор растровых изображений, который называют свободной альтернативой Photoshop, хотя он и не перекрывает всех возможностей продукта Adobe.

Для работы с 3D

Blender — великий и прекрасный 3D-редактор, которому трудно найти альтернативу. Позволяет не только создавать и анимировать модели, но и разрабатывать игры на встроенном движке Blender Game Engine.

MakeHuman — программа для создания реалистичной 3D-модели человека или антропоморфного персонажа. Blender поддерживает импорт из этой программы (формат .mhx2). На сайте сообщества вы найдете постоянно пополняемую библиотеку дополнительного контента: одежды, причесок, глаз, анимационных ригов, поз, мимики и другого.

World Machine — генератор ландшафтов с возможностью экспорта в Unity. Бесплатен для некоммерческого использования.

TreeIt — генератор деревьев разного типа. Прост в использовании, умеет экспортировать модели в OBJ, X, FBX и DBO, что делает его совместимым с разными движками.

XNormal — программа для запекания карт нормалей.

Sculptris — приложение для ручной «лепки» и раскрашивания 3D-моделей. После запуска программы вы видите что-то похожее на кусок глины. Чтобы придать ему форму, придется много работать мышью и часто переключаться между инструментами.

Аудиоредакторы

Cakewalk Sonar — звуковая рабочая станция с профессиональными инструментами для сочинения музыки, записи, редактирования, сведения и мастеринга аудио. В апреле 2018 года продукт Cakewalk Platinum стал бесплатным. Вдобавок у него активное сообщество: можно делиться своим творчеством, получать фидбэк, скачивать дополнения.

MuseScore — кроссплатформенный нотный редактор для создания музыки через работу с партитурой. Бесплатный, с открытым исходным кодом (GPLv2) и десятками плагинов. Удобно использовать в связке с Sonar.

Bosca Ceoil — программа-трекер, где вы создаете музыку методом расстановки семплов. Есть онлайн-версия и десктопные приложения для Windows, Linux, MacOS X.

FamiTracker — позволяет создавать музыку для восьмибитных приставок NES, Famicom и Dendy. Благодаря экспорту в формат NSF ваши композиции будут без проблем воспроизводиться не только в эмуляторах, но и на реальном «железе». А еще вы сможете сохранять музыку в WAV-файлы.

Wwise — система интерактивного звука для игр и приложений, в том числе AR/VR. Работает на всех основных десктопных и мобильных платформах, с устройствами виртуальной и дополненной реальности HTC, Oculus, Google, Sony, Microsoft, а также на консолях Xbox, PS (3, 4, Vita), Wii, Nintendo Switch. Инструмент не совсем для новичка — скорее «на вырост». WWise бесплатна в нескольких случаях:

  • при бюджете игры менее 150 000 $. Ограничение — можно использовать до 500 звуков;
  • для некоммерческих проектов. Лицензию присылают по заявке.

К системе можно прикручивать сторонние плагины.

FMOD Studio — набор инструментов, который охватывает весь цикл работы со звуком для игр на Unity, UE4 и других движках. Упрощает взаимодействие звукорежиссеров и программистов: те и другие могут быстро вносить в проект изменения, не мешая друг другу. Работает на ПК и Mac.

Audacity — простой кроссплатформенный звуковой редактор, функциональность которого можно расширять за счет плагинов, в том числе VST и LV2.

Русскоязычные сообщества игроделов

Для начала пройдемся по группам VK:

GGDev — новости игровой индустрии, уроки и статьи для разработчиков, обсуждение жанров и игровых механик, стримы мероприятий. Реклама своих проектов строго запрещена — админы говорят, что в этом «фишка» группы. 6000 подписчиков.

Инди игры | Indie Games — группа для продвижения ваших инди-проектов, а формально — паблик Indie-раздела на портале Game.ru. Участники могут предлагать свои материалы, но публикует что-либо только админ. Зато в обсуждениях подписчики делятся трейлерами и скриншотами, новостями и мнениями, ищут людей в команду.

Unity3D & CG / Unity 3D — группа взаимопомощи Unity-разработчиков. Основная масса публикаций — это вопросы участников по разным аспектам работы над игрой. Причем сообщество очень живо откликается и помогает, что и делает группу интересной. Более 32 000 участников.

Игровая вселенная — публикует познавательные материалы для игроделов и gamedev-вакансии. Подписчиков — 24 000.

Last Indie Standing — обсуждение инди-игр и их разработки, 5–10 постов в день. Иллюстрированные заметки по гейм-дизайну, новости, конкурсы, видео лекций и конференций. Около 4000 подписчиков.

GameDev — Создание игр — группа с лозунгом «Научим запускать однообразные провальные проекты». :) Основа ленты — ссылки на познавательные материалы (в основном с Хабра). Реже появляются анонсы мастер-классов и конференций по играм. Участников — 7000.

Обязательно загляните в «Лигу разработчиков видеоигр» на Pikabu! Кстати, там вы можете встретить преподавателей GeekBrains, но об этом в другой раз. А пока предлагаю полистать красочные посты в ленте Лиги или даже написать туда о вашем проекте.

Новости, советы, конкурсы

В Рунете есть крупные форумы-сообщества, где можно задавать вопросы, показывать свои работы, набирать людей в команду, участвовать в конкурсах.

GameDev — сайт + форум для любителей и профессионалов игростроя, где можно узнать, чем сейчас живут разработчики игр в СНГ и ближайшем зарубежье. Регулярные обзоры новинок, обучающие статьи, анонсы главных мероприятий и ежедневное общение с увлеченными людьми — все это подстегивает развивать свой проект.

GCUP — портал, целиком посвященный созданию игр. Здесь собрана огромная база игровых движков и конструкторов. А еще тут — уроки, новости, утилиты и бурлящий форум, где выкладывают и обсуждают новые игры, набирают людей в команду, задают вопросы и делятся опытом.

DTF — информационное сообщество типа Pikabu, но более узкой направленности. Пользователи публикуют и обсуждают статьи про IT и сферу развлечений, в том числе игры и их разработку. Еще тут есть раздел вакансий для разработчиков, гейм-дизайнеров, художников и других спецов, участвующих в создании и раскрутке игр.

Уф… На этом все. Спасибо, что дочитали! Если нашли интересное — не забудьте добавить в закладки! :) 

Всем, кто задумал свою игру и готов творить до победы, — успеха и неиссякаемой мотивации! Расскажите о своем проекте в комментариях. Надеемся, эта статья приблизит вас к цели.

Мы упустили что-то важное и замечательное? Забыли упомянуть ваш любимый инструмент разработчика или сайт с игровыми ресурсами? Пожалуйста, дополните наш список — будем признательны за подсказки и обратную связь.

Пройти обучение

16 июл 19, 16:19
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

В гейм-дизайнеры с нуля. Часть 2

Это вторая часть перевода статьи From Zero to Game Designer: how to start building video games even if you don’t have any experience. Автор оригинала — Angela He. Первая часть была посвящена разработке концепции игры и работе с графикой.

Программирование

Теория

Debug.Log('О боже! Пришло время кода!! ^_^');

С чего начать? Выберите игровой движок и среду разработки, в которой будете писать код (Integrated Development Environment  —  IDE). Список движков и IDE, которые я рекомендую, вы найдете ниже.

Что дальше? Пишите код. Не умеете? Не волнуйтесь, этому можно научиться.

Мы исключили из перевода главу с объяснениями таких азов программирования, как переменные, функции и исключения. В подразделе одной статьи все равно не расскажешь всего, что нужно знать новичку для создания игры. Но есть вариант лучше. Вы можете пройти бесплатный курс «Основы программирования» на GeekBrains и записаться на бесплатные интенсивы по языку, который выберете для написания игр.

На каком языке вы собираетесь программировать? C++? JavaScript? C#? У каждого свои особенности и назначение.

API (Application Programming Interface — программный интерфейс). Когда разберетесь с основами, вам потребуется изучить конкретный API вашего игрового движка. Программные интерфейсы — это арсенал мощных инструментов, обернутых в простые классы и функции, которыми вы можете пользоваться. API заметно упрощают жизнь.

Посмотрите на примеры проектов, сделанных на выбранном движке. У Unreal и Unity есть множество бесплатных примеров. Это позволит вам понять, как все может выглядеть на практике. К тому же это может натолкнуть на идею собственной игры. Моя первая игра родилась из знакомства с возможностями Corgi Engine.

if (you.getThisFar()==true) {

veryProud=true;

you.didIt(); //НАСТРОЕНИЕ: ОФИГЕННОЕ

}

Короткое воодушевляющее напутствие. Я знаю, что поначалу программирование пугает. Ничего не понятно, в попытке найти выход постоянно налетаешь на «стены», после очередных ошибок и неудач хочется все бросить. Это не значит, что у вас плохо с программированием. Писать код — всегда сложно. Неудивительно, если в начале пути вы теряетесь.

Чтобы научиться программированию, нужно время — как и с любым другим навыком. Позже это начнет приносить радость (по крайней мере, со мной было так).

Важные принципы разработки игр

Ориентированность на объект. Когда код выстроен вокруг объектов, он легче воспринимается человеком.

Принципы именования. Называйте переменные, классы и все остальное так, чтобы сразу было ясно их назначение. Например, функцию ближнего боя (melee attack) лучше назвать meleeAttack(), а не mA() и не protectbutalsoattac(). Вам и всем, кто будет читать код, должно быть сразу ясно, о чем речь.

Декомпозиция. Повторяющийся код выносите в отдельные функции. Вызывайте их вместо того, чтобы писать один и тот же код несколько раз.

Шаблон проектирования Singleton («Одиночка»). Позволяет хранить все данные класса в одном месте.

Избегать статических переменных. Вне singleton’ов я бы не рекомендовала создавать статические переменные — они существуют на протяжении всей игры, медленно работают и могут вести к непредвиденным событиям.

Шаблон проектирования Observer («Наблюдатель»). Позволяет создать штуки, которые в своей работе зависят от других объектов — чтобы компьютеру не надо было проверять, что там с другим объектом происходит.

Важные особенности Unity

Сопрограммы (Coroutines). Интерфейс IEnumerator и сопрограммы позволяют начать делать что-то и продолжать определенное время, а затем остановиться. Я часто этим пользуюсь, чтобы создать визуальный эффект взрыва, задать движение с помощью функции Lerp или дождаться загрузки сцены, прежде чем работать с ее объектами.

«Скриптуемые объекты» (ScriptableObject). Содержат данные с меньшими накладными расходами, чем при наследовании скриптов от класса MonoBehaviour.

Ресурсы

Игровые движки

Самописные. Надо знать C/C++ и низкоуровневое программирование. Очень-очень низкоуровневое.

Unity (*). 2D/3D. Кроссплатформенный. Требует знания JavaScript/C# на среднем уровне.

Unreal Engine. 2D/3D. Надо знать C++ на среднем уровне. Обратите внимание: поддержка 2D у этого движка так себе.

Pixi.js (*). 2D. Надо знать JavaScript на среднем уровне. Web.

GameMaker Studio. 2D/3D. Кроссплатформенный. Надо знать GML. Подходит для новичков.

Corona. 2D. Кроссплатформенный. Надо знать Lua. Для начинающих.

Среды разработки (IDE)

Visual Studio Code (*). Для MacOS. Не лагает и может похвастаться всякими фишечками  — всплывающими подсказками и быстрой навигацией (⌘T).

Visual Studio (*). Для Windows.

MonoDevelop. Распространяется вместе с Unity. Часто лагает.

Бесплатные ресурсы для Unity

Море бесплатных дополнений и ресурсов для Unity вы найдете в официальном магазине Unity Asset Store, на сайтах GitHub, bitbucket и других. Материалы с GitHub и bitbucket я использую в каждом своем проекте.

Упрощайте себе жизнь с помощью готовых ресурсов, но учтите, что они несовершенны. Если вы нашли ошибки, не стесняйтесь их исправлять и сообщать о них разработчикам.

TextMeshPro (*)

LeanTween (*)

Fungus

Corgi Engine

Dialogue System

Post Processing Stack

Keijiro Takahashi. Работает над Unity. Делает потрясающие свободные (open source) проекты с визуальными эффектами для Unity!

И последнее по порядку, но не по важности — мое средство № 1 для преодоления непоняток с кодом — Google!

Доводим проект до ума: отладка и оптимизация

Теория

О! Дочитали досюда?! Это просто замечательно  — вы молодец. Я серьезно. Если вы проделали такой большой путь, я бы хотела услышать о вашей игре. Напишите мне о ней!

Думаете, теперь все готово? Как вам сказать… С вероятностью 99,99999 % в игре есть баги. Так что самое время заняться тестированием.

Поиск ошибок и отладка (debugging)

Заставьте кого-нибудь (но не себя!) поиграть в вашу игру. Желательно в вашем присутствии: если человек столкнется с ошибкой, он может ее не заметить или затрудниться с описанием.

Попробуйте пройти игру на всех целевых платформах. Бывает, все работает в редакторе, но дает сбои на реальных устройствах. В Linux и особенно разных версиях Android все может пойти не так, как вы задумывали.

Ладно. Нашли баг — что дальше?

Посмотрите в консоль: нет ли там исключений. Уже видите? Отлично! Теперь найдите имя файла и номер строки, где исключение было выброшено. Если вы впервые слышите об исключениях, расспросите Google. А дальше сосредоточьтесь на том, что же пошло не так в уже известной строке.

Все еще не знаете, в чем беда? Расставьте контрольные сообщения на проблемном участке кода и выводите их в консоль. Выводите значения переменных и смотрите, как они меняются по ходу выполнения программы. Соответствует ли это вашим ожиданиям? Если нет, вносите правки.

Если ситуация хуже некуда, проверьте логи своего проекта. Они расскажут гораздо больше, чем консоль. Прочтите последние строки перед той, где было выброшено исключение. Если чего не знаете, спросите у Google.

Ну как, исправили баг? Спите уже — утром все само починится, ведь это лишь дурной сон, правда?

Распространенные ошибки

Исключение NullReferenceException

var.doThing(); //выбрасывает NullReferenceException: Object reference not set to an instance of an object

В чем проблема: Вы пытаетесь что-то сделать с null-значением (несуществующей) переменной.

if(var != null)
{
var.doThing(); // безопасно выполняем необходимое!
}

SyntaxErrorException

Проблема: в коде синтаксические ошибки.

Как быстро исправить: в сообщении об исключении будет написано, какой символ дает ошибку. Исправьте этот символ.

Обратите внимание: если символ — двойная кавычка, убедитесь, что используете прямые кавычки, а не загнутые, которые доставляют много хлопот:

" //прямая
 //загнутая

Розовый или черный экран

Возможная проблема: какой-то шейдер не рендерится.

Возможная причина: вы используете 3D-шейдер в 2D-игре. Или какая-то из функций шейдера не поддерживается в нужной вам операционной системе. Всегда используйте в мобильных играх только мобильные шейдеры.

После отладки вы можете дополнительно улучшить игру, если оптимизируете производительность и использование памяти. Так ваша игра будет быстрее грузиться и меньше раскалять «железо» игроков.

Общие советы по оптимизации

  • Установите желаемую частоту кадров в секунду. Для визуальной новеллы годится FPS на уровне 20, а шутеру от первого лица больше подойдут 60 кадров в секунду. Чем ниже частота кадров по умолчанию, тем меньше времени игра тратит на их отрисовку.
  • Анимация / частицы / отброс загороженной геометрии. Функция Occlusion Culling в Unity отвечает за рендеринг тех объектов, которые заслонены от камеры другими. Чего не видит камера, то не рисуют. Анимация персонажей, обновление частиц, отрисовка 3D-моделей — все это должно выполняться только в поле зрения камеры!

  • Сжимайте текстуры и звук. Для сжатия текстур используйте библиотеку Crunch. Воспроизводите потоковую музыку и декодируйте звук при загрузке. Снижайте качество звука. Обратите внимание, что при сжатии звука потеря качества не всегда заметна человеческому уху.

Объединение объектов. Лучше не создавать и не уничтожать множество объектов одновременно — это ведет к пиковым нагрузкам на систему. Собирайте объекты в списки, очереди или другие структуры данных.

Такие вещи, как пули, обязательно надо собирать в пул, а не обрабатывать по одной.

Не позволяйте рейкасту касаться вещей, которым не нужны вводные данные. Рэйкасты — как маленькие лучи, которые проходят от ваших пальцев или указателя мыши до объекта игрового мира при каждом клике или нажатии. Уберите из рейкастовых вычислений объекты, которым не надо реагировать на такие сигналы.

Если хотите задачу потруднее:

Оптимизируйте шейдеры. Присвойте каждому рендеру по материалу. Это сэкономит ресурсы в начале, ведь игре не нужно будет создавать новые материалы для всего подряд.

Включайте в шейдер для материала только необходимое для его работы. Например, кнопке не нужна маска, поэтому для нее лучше использовать спрайтовый шейдер.

В Unity используйте наборы контента (Asset Bundles) вместо папок с названием Resources. Наборы сэкономят память за счет подгрузки файлов из онлайн-хранилища (например, Dropbox) или с жесткого диска. Пока я мало этим пользовалась из-за недостаточно подробной документации.

Ресурсы

Все это создавалось для Unity, но можно использовать и с другими движками.

Скрипты

Оптимизация скриптов в Unity-играх (*).

Графика

Руководство по оптимизации UI в Unity (*).

Лучшие практики работы с графикой (*).

Память

Уменьшаем размер файлов для билда (*).

Память.

Оптимизация под платформы

Практическое руководство по мобильной оптимизации (*).

Соображения о производительности WebGL (*).

Размышления о работе с памятью в WebGL (*).

7 этапов оптимизации мобильных VR-игр от Olly.

Продолжение следует.


25 дек 18, 19:22
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Книги о создании игр: ТОП актуальных (часть 1)

Вам тоже надоели книги с общими словами и прописными истинами под яркой обложкой? Последние пару лет я стихийно просматривала литературу о создании игр, и если вдруг удавалось выцепить что-то занятное, читала. По итогам предлагаю вам «избранное» из найденного. Интересного много, поэтому список разбиваю на несколько частей.

Книги на английском и в большинстве еще не переводились, по крайней мере свежие издания.

Game Engine Architecture (2018)

Автор: Jason Gregory.

Третье издание книги Джейсона Грегори «Game Engine Architecture» — обновленный рассказ профессионала игровой индустрии о работе над игровыми движками. Автор подробно описывает подходы, применяемые реальными студиями, где он трудился, в том числе Electronic Arts и Naughty Dog Inc. Сам он разрабатывал движки к серии шутеров Uncharted для PlayStation 3 и 4. Чтобы понимать материал, не обязательно быть опытным игроделом, но нужно знать C++.

Первая редакция книги вышла в 2009 году, вторая — в 2014. Особый акцент в новом издании сделан на параллельные вычисления и их применение в играх. Автор убежден, что даже в работе с высокоуровневым языком программист обязан понимать все происходящее на нижних уровнях, в том числе на аппаратном. Это сужает аудиторию книги, но если вы разделяете такой подход, у вас будет возможность «копнуть глубже» и разобраться в вопросах, которые вы раньше оставляли на потом.

Если вы задумали написать свой движок или разобраться, как работает чужой, «Game Engine Architecture» поможет в этом.

Location-Based Mobile Games. Design Perspectives (2018)

Авторы: Davide Spallazzo, Ilaria Mariani.

Мечтаете сделать свой Pokemon Go? Научная работа Давида Спаллаццо и Иларии Мариани посвящена мобильным играм на местности (LBMG). В дополненной реальности физическое местоположение игрока влияет на игровые события. Процесс может быть завязан на поиск и сбор предметов, решение головоломок, контроль территории, обучение.

Еще в 2012 году — до истории с ловлей покемонов — Niantic выпустила MMO-игру Ingress для iOS и Android. Если кратко: игроки делятся на два лагеря и бегают между реальными городскими достопримечательностями в поиске порталов. Контролируемые точки-порталы образуют виртуальные треугольники — так происходит раздел карты.

Книга рассказывает, как появился и развивался жанр LBMG, показывает, какие приемы используют авторы для достижения коммерческих и иных целей. Самое ценное — много внимания уделено социальному измерению мобильных игр. Вы узнаете, какие методы используются для влияния на эмоциональное и психологическое состояние игрока, и как игра о поиске сокровищ может быть завуалированным рассказом о депрессии.

Все темы авторы рассматривают с двух точек зрения: гейм-дизайнера и конечного потребителя. Вы увидите, как каждую приведенную в книге идею интерпретируют игроки. Узнаете о частых ошибках гейм-дизайнеров и о том, как включать в игру реальные физические объекты и выстраивать командное взаимодействие в смешанной реальности.

Чтобы оценить эту книгу, нужна привычка к чтению научных работ. Здесь нет упрощенных объяснений и забавной инфографики, но через каждые два слова — ссылки на источники данных.

Artificial Intelligence and Games (2018)

Авторы: Georgios N. Yannakakis, Julian Togelius.

Искусственный интеллект — неотъемлемая часть компьютерных игр, а сами игры — «полигон» для обкатки новых AI-алгоритмов. Книга рассказывает, как ИИ упрощает и удешевляет разработку игр. Вы узнаете, как игроделы умудряются автоматически генерировать контент: уровни и карты, графику, звуковые эффекты и даже правила. Авторы книги также делятся примерами усовершенствования геймплея с помощью искусственного интеллекта.

По структуре и содержанию перед нами университетский учебник. Здесь нет кода, но за каждой главой следуют упражнения, полезные ссылки и рекомендации, что почитать по теме. Вы узнаете, где в интернете брать для анализа данные о тысячах игр и о поведении игроков. За дополнительными ресурсами для выполнения практических заданий нужно заходить на сайт книги — gameaibook.org.

Целевая аудитория издания — студенты-«технари», ученые, гейм-дизайнеры и разработчики, специалисты по машинному обучению. Предполагается, что у читателя есть базовое представление об ИИ, программировании, алгебре и началах математического анализа. Но пусть гуманитарии не пугаются: в тексте ничего сложного нет. Самое приятное — актуальные примеры, которые показывают, что происходит в авангарде игровых AI-проектов.

По словам авторов, они решились написать эту книгу после более чем 10 лет преподавания и исследований искусственного интеллекта в учебных заведениях разных стран мира. Главной задачей было создать всеобъемлющую работу об использовании ИИ в играх, а игр — в исследованиях ИИ.

Learn to implement games with code (2017)

Автор: John M. Quick.

Книга быстро погружает в разработку игр на Unity, но главное — вы тренируетесь писать годные алгоритмы и код, что важно вне зависимости от движка. Опыта работы с C# не требуется — достаточно знать, что такое переменные, условия, циклы, массивы, функции. Если сомневаетесь в своих силах, посмотрите бесплатный курс «Основы программирования» на GeekBrains.

По содержанию книга похожа на методичку: в ней нет «воды» и философских разговоров — только сжатые инструкции и пояснения. Каждая глава — это новая практическая задача, вокруг которой выстроена теоретическая часть. При этом теории дают ровно столько, сколько нужно для решения задачи. Вы получаете ссылку на Unity-проект, который нужно достроить. Когда задание выполнено, вы можете свериться с эталонным кодом — тоже по ссылке.

Автор — Джон Куик (John M.Quick) — имеет ученую степень Ph.D. в области образовательных технологий. Он исследовал развлекательную составляющую и проявление индивидуальности в играх. В своих научных работах он предложил модели GEM (Gameplay Enjoyment Model) и GGO (Gaming Goal Orientation). Преподавал компьютерную грамотность, гейм-дизайн и программирование в университетах США и технологическом институте DigiPen в Сингапуре.

Pro HTML5 Games (2017, 2-е издание)

Aвтор: Aditya Ravi Shankar.

Книга учит создавать HTML5-игры с нуля. Никакой лирики — только практика и необходимые пояснения. Автор — индийский разработчик — отличился тем, что в числе других проектов реализовал на HTML5 классические игры Command and Conquer и Commandos: Behind Enemy Lines.

Вы изучите основы HTML и JavaScript, поработаете с физическим движком Box2D, создадите игровой мир, напишете сначала простую аркаду Froot Wars, а затем мобильную браузерную RTS с одиночной кампанией, мультиплеером и поддержкой тачскрина. Вы также получите практические советы по выбору и настройке инструментов разработчика. Что тут еще скажешь? Надо пробовать.

Games, Design, and Play (2016)

Авторы: Colleen Macklin, John Sharp.

Книга подробно рассказывает о работе над инди-проектами — в теории и на практике. Охвачено множество аспектов: от создания концепции до вывода игры в продакшн.

Обратите внимание: это не о разработке, а о гейм-дизайне. По выражению авторов, «архитекторы проектируют здание, но не строят его». Поэтому речь не о коде или контенте, но об идеях и принципах, определяющих, какой будет игра. Шарп и Маклин на реальных примерах разбирают шаблоны и приемы игрового дизайна, подходы к прототипированию. Вы узнаете, как получать что-то новое из уже знакомых идей. Например, как организация игрового пространства может изменить игровой процесс.

Источниками примеров и идей в книге выступают не только видеоигры, но и «настолки», и спортивные состязания на свежем воздухе.

Рекомендую тем, кто хочет создавать уникальную игровую механику. Это сложно: гораздо чаще мы видим однотипные проекты, которые отличаются друг от друга только оберткой — сюжетом и внешним видом. Книга будет особенно полезна, если вы уже сделали несколько простеньких игр и стремитесь улучшить результаты по организационному и творческому направлениям.

Game Audio Programming: Principles and Practices (2016)

Автор: Guy Somberg.

По заявлению автора, это первая книга, целиком посвященная программированию звука в играх. Для такой темы труд действительно основательный — на 300 с лишним страниц. Вы узнаете об устройстве звуковых движков, об актуальных инструментах для работы со звуком в играх, о том, как программисту взаимодействовать с саунд-дизайнерами. Издание повествует о звуке с точки зрения физики и психоакустики, объясняет работу аудиодвижков Wwise, FMOD и ADX2, который де-факто является стандартом у японских игровых студий. А еще книга показывает, что можно делать со звуком в CRYENGINE.

Автор книги разрабатывал звуковые движки для игр The Sims 4, Bioshock 2, Hellgate: London, Tales from the Borderlands и Game of Thrones.

Продолжение следует…

А вы какие знаете хорошие и актуальные книги об игрострое?


6 окт 18, 15:12
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как создать популярную игру для смартфонов

Бывало ли с вами такое: смотришь на пассажиров в общественном транспорте, которые лопают шарики в телефонах или залипают в «2048», и думаешь: «Простая же игра! Тоже хочу подобное сделать»? Со мной — постоянно, поэтому я решила разобраться, как создать популярную игру для смартфонов. Разведала, что по минимуму нужно знать для разработки игр, каких ошибок избегать и на что обращать внимание.

Разберитесь в азах

Чтобы понимать, как разработать концепцию игры, как выстроить игровой процесс и сделать так, чтобы пользователю было приятно играть, нужно познакомиться с геймдизайном. Понять принципы создания видеоигр помогут книги из подборки The 20 Best Video Game Design Books. Читать все, конечно, не обязательно.

В части программирования нужно уметь писать native code для платформы, под которую разрабатывается игра. По мнению руководителя мобильной разработки DataArt Алексея Рыбакова, потребуются такие знания:

  1. Понимать жизненный цикл приложения для iOS/Android внутри операционной системы — что происходит при старте и телефонном звонке, какие ресурсы и когда загружаются в память.
  2. Программировать на Swift/Objective-C для iOS и на Java для Android.
  3. Понимать форматы звука и графики (текстур) для iOS/Android.
  4. Иметь опыт программирования на C/C++ для iOS/Android на OpenGL.
  5. Понимать цикл игры от создания до появления в Store.

Есть смысл посмотреть на игровые кроссплатформенные решения:

  1. Unity 3D.
  2. Unreal Engine.

Разработчик игр, сооснователь студии FIFTYTWO, выпустившей игры JELLIES! (5 миллионов установок на iOS) и Kenshō («Выбор редакции» в App Store и Google Play) Михаил Шагин выделяет Unity и C#: «Изучите Unity и язык программирования C# — это стандарт в индустрии. Работая на этом движке, вы будете быстро развиваться. Для Unity существует Asset Store — магазин готовых решений от разработчиков. Он сэкономит вам много времени и предоставит технологии, которые ранее были недоступны небольшим студиям и начинающим программистам. Обучаться помогут туториалы, видео-уроки и онлайн-школы».

Сделать популярную игру, особенно одному — очень сложно. Потребуются навыки программирования, знания в области геймдизайна, 3d-моделирования, анимации, графического дизайна. Разработка игр — это пересечение технологий, искусства и бизнеса. Пригодится и компетентность в психологии. Поэтому лучше все-таки собрать команду.

«Современные игры для смартфонов, присутствующие на рынке — это результат работы слаженных коллективов, а не одного человека. Обычно это программисты, геймдизайнеры, художники, музыканты, тестировщики, аналитики рынка, специалисты по рекламе и продвижению, финансисты. Сейчас практически невозможно реализовать популярную игру в одиночку», — делится опытом Алексей Рыбаков.

Подумайте, для кого будет эта игра

Нужно знать своего геймера на каждом этапе разработки и поддержки игры. Кто это? Что он любит? Сколько ему лет? Из какой страны? Определиться с географией особенно важно. «Азия, Европа, Штаты, СНГ — везде есть свои нюансы в реализации геймплея, графики и других аспектов. Простой пример: в азиатских странах все герои должны быть с большими глазами», — объясняет Алексей Рыбаков.

Геймплей прежде всего

Сначала разработайте core gameplay — основу игры: придумайте, что будет делать игрок, как и в зависимости от чего игровой мир будет на это реагировать. Он должен затягивать. К остальному переходите, только когда core gameplay будет готов на 100 %.

«Отложите до финальной стадии проекта исправлене багов, улучшение графики, переводы и озвучку. Вам придется много раз переделывать игру, и часть несвоевременно проделанной работы окажется напрасной», — советует Михаил Шагин, сооснователь студии FIFTYTWO.

Основной критерий крутого геймплея — он заставляет возвращаться к игре. «В игре должна быть глубина, чтобы игрок оставался в ней как можно дольше. В конечном счете успешность игр основывается на retention rate — проценте игроков, возвращающихся по прошествии времени», — объясняет Михаил.

Попробуйте применить принцип "Easy to learn, hard to master"

Это классический совет в геймдизайне: научиться играть должно быть очень просто, но достичь совершенства — крайне сложно, практически невозможно. Это и приковывает к игре. «Этот принцип особенно важен для мобильных free-to-play проектов, потому что у разработчика есть не более 10 минут, чтобы зацепить игрока. Большинство пользователей удалят игру после первой же непонятной ситуации и больше никогда не запустят приложение. Человек сразу должен понять, как играть и в чем цель», — рассказывает Михаил Шагин.

Авторство этого принципа приписывают Нолану Бушнеллу, создателю компании Atari. В оригинале он звучал так: "All the best games are easy to learn and difficult to master. They should reward the first quarter and the hundredth". Нолан Бушнелл сказал это в 1971 году в контексте игровых автоматов Atari. «В те времена игровые автоматы были в новинку, и простота игр была критичной для пользователя. Особого игрового опыта ни у кого не было, и для коммерческого успеха было необходимо, чтобы у игрока были ассоциации из реальной жизни», — объясняет Алексей Рыбаков, руководитель мобильной разработки DataArt.

Прообразом известной игры Atari — Pong — послужил теннис. В ее основу заложены простые физические принципы: угол падения равен углу отражения и подобные. Она позволяла перенести реальный опыт в компьютерную игру, поэтому ее просто было понять начинающему игроку в 1971 году. Но с ускорением мяча при переходе на уровень выше она становилась все сложнее и сложнее (hard to master) и заставляла играть вновь и вновь.

Геймдизайнер Роб Прадо придумал еще одну вариацию принципа: "Easy to learn and almost impossible to master". Алексей Рыбаков объясняет: «Идея в том, что достаточно просто собрать стаф, необходимый для получения нового игрового предмета или уровня. На примере StarCraft — легко отправить все свои войска и разрушить базу. Но по мере продвижения по сюжету у игрока должны появляться новые возможности, предметы, юниты. Все это, плюс взаимодействие с реальными игроками, приведет к тому, что игру можно будет проходить в огромном количестве вариантов. Игрок будет возвращаться к ней многократно».

Этот принцип — не гарантия успеха. Но практически любое решение, которое будет заставлять человека возвращаться в игру, оправдывает себя.

Сделайте геймплей простым и удобным

Думайте об особенностях платформы, под которую пишется игра, и о ситуациях, в которых люди будут в нее играть. Советует Михаил Шагин: «Игровая сессия, вероятно, составит всего 10–15 минут. Большой плюс, если игрок сможет безболезненно отвлечься от игры. В этом помогут пошаговые геймплейные механики. Телефон обычно держат вертикально в одной руке — а это значит, что в вашем распоряжении будет только один палец игрока, большой. Постройте геймплей на простых свайпах и тапах — этот принцип используется в большинстве казуальных хитов. Посмотрите на Voodoo и Ketchapp — французских издателей игр, чьи установки составляют 50 % среди аркад в App Store. Такие проекты делаются за одну–две недели, что не мешает им занимать первые строчки в топе».

Не изобретайте велосипед

«Часто молодые компании начинают писать свои движки — что крайне интересно, придумывать новые архитектуры и скриптовые языки для управления юнитами — что еще более увлекательно, придумывать мегановые жанры игр — это вообще хардкорно», — рассказывает Алексей Рыбаков. Не надо с этим спешить, стоит основательно вникнуть в существующие технологии.

Разберитесь в продвижении игр

Подборки в магазинах приложений, реклама или сарафанное радио — что сработает для вашего проекта? Нужно понимать, что и с какой целью делаешь с точки зрения маркетинга. Михаил Шагин знал, зачем игре красивое оформление: «В Kenshō мы сделали упор на качество и визуальный стиль, что принесло нам бесплатную поддержку от платформ. Мы получили отметку «Выбор редакции» App Store и Google Play, стали «Игрой дня» в App Store. Kenshō попала в подборки и на баннеры, что и дало нам основной трафик».

Помните, что ошибка — это информация, а не повод расстраиваться

Ваша игра будет сражаться за внимание игроков с разработками от Electronic Arts, Gameloft или Rovio. Это очень сложно. Но это стоит воспринимать только как вызов. А любую ошибку — как ценный опыт. В конце концов, прежде чем Angry Birds стала популярной в 2009 году, Rovio выпустила на рынок более 50 игр и была на грани банкротства.

Пройти обучение

13 сен 18, 10:16
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Обратная разработка и перевод старых игр

Помимо заработка у программирования есть бонус —  возможность выбрать интересное и необычное хобби. Например, разбирать «на запчасти» любимые видеоигры — исследовать их и переводить. Чему учит локализация старых игр,  каких навыков требует, с чего начать — об этом я расспросила программиста, который занимается подобными проектами уже 10 лет.

Игрострой конца XX века дарил нам яркие сюжеты и идеи, которым может позавидовать современная индустрия с ее канонами и ограничениями. Старые хиты были эталонами: формировали представление об игровой механике и том, какими должны быть шутеры, стратегии, RPG. Ценители расскажут вам о «теплой ламповой атмосфере» — особенно те, для кого продукция 90-х — это привет из детства.

Многие игровые древности никогда официально не выходили на территории СССР и России. И если переводились, то кустарно — пиратами. Даже если вы неплохо знаете английский, приятно увидеть старую игру такой, будто ее изначально разрабатывали для русскоязычной аудитории. Все выглядит по-новому, когда не только меню или субтитры — весь мир игры говорит на «великом и могучем» и всюду красивые кириллические шрифты.

Такие проекты невозможны без технических специалистов, которые берут под контроль ресурсы игры: надписи, изображения, звук. Для разработчика это практика и интеллектуальное приключение.

Интервью с программистом-локализатором

Иван — профессиональный программист с 20-летним опытом. В свободное время он помогает «Бюро переводов Old-Games.Ru» русифицировать хитовые игры 80-х и 90-х годов. Если коротко, «Бюро» — энтузиасты, которые бесплатно делятся переведенными играми с человечеством.

— Как давно вы занимаетесь локализацией старых игр? С чего это началось для вас?

— Примерно в 2008 году я обнаружил исходники игры Beneath a Steel Sky и задумал перевести ее на русский язык. Я понял, что с технической стороной справлюсь сам, но для перевода текста и отрисовки шрифтов нужны помощники. В интернете нашел команду PRCA (Project of Russification of Classic Adventures) и предложил им поработать вместе. Они согласились, и я занялся извлечением текста, шрифтов, изображений. Когда уже перешел к вставке текста и шрифтов обратно в игру, у меня навернулся винт — все потерялось. Я обиделся и «забил».

Но в 2010 году вернулся к этой теме и начал работу заново. Написал инструмент для экспорта/импорта игровых ресурсов и снова обратился в PRCA, где мне рассказали о «Бюро переводов Old-Games.Ru».

— В каких еще проектах «Бюро» вы участвовали или сейчас задействованы?

— После локализации Beneath a Steel Sky я помогал с проектами:

Может, еще что-то забыл. Сейчас исследую шрифт известного нуар-квеста Black Dahlia (1998).


Скриншот из игры Black Dahlia

— Чему учит программиста работа над локализацией старых игр?

— Очень быстро прокачивает скилл реверса: учит проектировать обратные алгоритмы, правильно дебажить, читать ассемблерные листинги. Об этом еще поговорим.

Другой неплохой навык, который можно развить — оптимизация кода. Это особенно актуально для пишущих под мобильные платформы. Старые игры были оптимизированы, так как компы были слабые, а носители — маленькие. Поэтому в коде DOS-игр часто встречаешь хитрые оптимизации по размеру и производительности. Да и просто бывает любопытно, какими алгоритмами пользовались программеры тех времен. Можно что-то почерпнуть для себя.

—  Из каких этапов строится работа над переводом?

— Обычный порядок действий:

  1. Ищем, нет ли готовых инструментов для работы с ресурсами игры. И не вытаскивал ли их кто-то раньше.
  2. Реверсим игру — «разрабатываем обратно», чтобы определить форматы хранения и сжатия шрифтов и текста.
  3. Пишем инструменты для экспорта ресурсов.
  4. Затем — для их сжатия и импорта.
  5. Отлаживаем и поддерживаем свои инструменты.

Главная задача — добраться до шрифта и текста. Когда ты их контролируешь, можно начинать перевод.

— Вы сказали о готовых утилитах для редактирования ресурсов. Если они есть, зачем писать свои?

— Я ищу готовые тулзы. Если нахожу — кидаю их переводчикам, нет — создаю сам.

— Давайте о самом вкусном — о реверсе. Что это? Как это происходит?

— Реверс-инжиниринг — восстановление алгоритма работы программы. Это процесс противоположный разработке. Мы не пишем программу, которая реализует конкретный алгоритм, а восстанавливаем алгоритм по готовой программе. Для этого нужно сначала проанализировать дизассемблированный/декомпилированный или открытый исходный код. Подробнее об этом можно почитать в Википедии.

— Умение восстанавливать алгоритмы наверняка полезно и специалистам по информационной безопасности. Можно анализировать ПО и выявлять вредоносный код. А как это помогает в работе над играми?

— Чтобы извлечь ресурсы из игры, надо знать, где и в каком формате они лежат, каким образом сжаты. Лучший способ это понять — посмотреть, как сама игра достает их, отрисовывает графику и текст. Потом по восстановленному алгоритму можно писать утилиту для экспорта/импорта. Ради экономии места в DOS-играх все ресурсы обычно сжимали. Делали это разными самописными упаковщиками.

— Расскажите на примерах, как вы восстанавливали алгоритм BaSS (Beneath a Steel Sky) и других игр.

— В работе c BaSS почти все было просто. У меня был исходный код движка игры на С++ (в составе ScummVM). Я нашел в коде место, где из файлов читались шрифты, картинки и текст. Потом проанализировал, как это работает, и написал свою тулзу, которая делала то же самое.

Из сложностей там было только написание компрессора по декомпрессору. Такая задача встречается в работе практически над каждой игрой. Мы знаем алгоритм распаковки данных. Чтобы скормить игре уже отредактированные ресурсы, надо сжать их так, чтобы декомпрессор их принял «как родных» и не заметил подвоха. То есть по алгоритму распаковки нам надо спроектировать упаковку.

Труднее с играми, для которых не удается найти исходники. Приходится дизассемблировать .exe-файл и в ассемблерном листинге искать функции, отвечающие за чтение ресурсов.

Если сходу не удается найти их, программу можно отладить дебаггером. Например, поставить точку останова на открытие и чтение файла. Затем дождаться, пока откроется интересующий нас файл и проследить, куда отправляются прочитанные из него данные. Когда функции обработки ресурсов найдены, я анализирую их ассемблерный код, чтобы составить алгоритм их работы.

— Важно ли знать, на каком языке была написана игра? И как это определить?

— Не важно. При реверсе в основном приходится иметь дело с дизассемблированным кодом. Но исходный язык определить можно — по сигнатурам компиляторов, соглашениям о вызовах или прологам функций.

— Вот вы узнали форматы сжатия и хранения. Сколько времени займет создание инструментов для экспорта/импорта?

— Написать экспорт по готовому алгоритму — задача несложная. Труднее восстановить сам алгоритм. Я обычно пишу экспорт по мере того, как исследую формат данных. С импортом сложнее, особенно если надо реализовывать сжатие. В целом, написание таких инструментов занимает дни.

— На каких языках вы пишете свои утилиты?

— Зависит от того, что установлено у переводчика, который будет моими инструментами пользоваться. В разное время я писал для «Бюро» на C#, C++, Java, ассемблере. Наши переводчики пользуются разными ОС, поэтому в последнее время больше пишу на кроссплатформенных интерпретируемых языках: Python, Ruby.

— Какие алгоритмы важно знать для написания инструментов? Используете ли вы какие-то библиотеки и фреймворки?

— Все программирование здесь сводится к работе с потоками байтов. А это можно делать на любом ЯП без сторонних библиотек. Ничего особенного для написания своих инструментов знать не требуется.

Чаще всего в DOS-играх использовали алгоритмы сжатия RLE и Хаффмана. Но встречаются и совсем уникальные. Здесь не так важно знать алгоритмы сжатия, как иметь навыки реверса.

Иногда сторонние библиотеки могут пригодиться для работы с графическими файлами, но в большинстве случаев можно обойтись штатными средствами языка. Для стандартизации инструментов у меня есть самописный фреймворк на Ruby — использую его во всех последних проектах.

— Какой софт помогает исследовать и отлаживать игру?

— Можно использовать дизассемблеры: IDA, Hopper Disassembler, Radare и другие. Для отладки подойдет DOSBox debugger. Можно еще поставить виртуальную машину QEMU с FreeDOS на ней и использовать встроенный дебаггер.

Также обратите внимание на программу ScummVM. Она включает переписанные движки старых DOS-квестов и позволяет запускать их на современных платформах, включая Linux и Mac. Добавляете игры (паки ресурсов) и можно играть. Исследовать и отлаживать ScummVM не помогает, зато позволяет смотреть открытые исходники движков.


ScummVM с запущенной Beneath a Steel Sky в переводе «Бюро»

— Вернемся к вашему текущему проекту Black Dahlia. Вы исследуете  шрифт. Что надо знать, чтобы пристроить в игру кириллицу?

— Нужно разобраться с форматом текста в игре. Я уже выяснил, как программа читает файл шрифта. Увидел, что там лежит сжатая картинка и таблица с координатами символов. Разобрал алгоритм сжатия. Дальше я напишу тулзу, которая извлечет картинку и преобразует в редактируемый PNG. Художники перерисуют шрифт, а мне останется конвертировать изображение обратно в формат игры, сжать и записать в оригинальный файл.

— С чего начать тем, у кого есть интерес и мотивация перевести игру, но нет пока опыта и знаний? На какие темы обратить внимание?

— Почитайте статьи по отладке и реверсу. Поищите исходники старых DOS-игр: посмотрите на форматы шрифтов, изображений и на то, как упакован текст. Почитайте форумы, посвященные открытым движкам и переводам старых игр. Познакомьтесь с движками, входящими в состав той же ScummVM. Загляните в git-репозиторий нашего проекта, где мы храним утилиты для разбора ресурсов старых игр.

Любой проект начинается с гугления. Соберите максимум информации по игре. Может, исходники, движок или ресурсы уже есть в открытом доступе. Или кто-то выложил готовые инструменты для экспорта/импорта. Все это сильно упростит и ускорит вашу работу. Если есть мотивация, надо действовать. Не зацикливайтесь на теории — знания и навыки придут с практикой. Ориентируйтесь не на технологии, а прежде всего на игру, которую хотите перевести.

—  Спасибо! Успеха Вам с Black Dahlia и другими переводами. А я еще добавлю для наших читателей несколько ссылок на статьи с описанием интересных реверс-проектов по играм.

Что почитать о реверс-инжиниринге игр

Цикл статей «Реверсим “Нейроманта”».

Devilution: проект по реверс-инжинирингу Diablo.

Извлекаем уровни из Super Mario Bros с помощью Python.

Реверс-инжиниринг визуальных новелл.


14 авг 18, 11:08
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Pac-Man: я дошел до 130 тысяч скачиваний и меня забанили

Всем привет! Меня зовут Дмитрий. В качестве учебного проекта я сделал для Android старую игрушку Pac-Man. За два месяца ее скачали 130 тысяч раз. Меня попросили рассказать о том, как я ее сделал и почему она «выстрелила». Но пока я готовил материал, кто-то пожаловался на нарушение авторских прав, и игру забанили. Расскажу по порядку, как все было.

Предыстория

Pac-Man — учебный проект в онлайн-университете GeekUniversity, в котором я учусь с декабря прошлого года. По образованию я маркетолог, но долгое время работаю сисадмином. В технической части я самоучка, самостоятельно осваивал C#, C++, писал десктопные приложения для работы. Но разобраться в мобильной разработке сам не смог, поэтому поступил на профильный факультет.

Обучение в GeekUniversity делится на модули. Зимой я проходил курс по разработке игр. Наш преподаватель, Александр Фисунов, предложил в качестве практики самим создать старую игрушку. Из нескольких вариантов группа выбрала Pac-Man из-за   известности и простоты в реализации этой игры. Мы решили, что у нас больше шансов успеть создать ее полностью, пока идут занятия. Забегая вперед, скажу, что во время курса так и не смог доделать проект до конца. Еще понадобилась пара недель после окончания.

Реализация

В нашей   группе было 35 человек. Каждый свой проект делал сам. На занятиях обсуждали теорию и потом сравнивали, у кого какие реализации. Игру писали на Java с использованием библиотек. Я работал с libGDX. Разработка велась под десктопную версию, затем переводили в мобильную. Все ссылки на исходники выложил на GitHub.

Я немножко изменил игру. Сначала хотел сделать один в один, но мне показалось, что это будет скучно. Поэтому создал 8 карт и 4 уровня сложности, от которых   зависит скорость передвижения призраков, частота обнаружения цели, время уязвимости и восстановления.

Добавил редактор карт на JavaFX. Его код тоже можно посмотреть в репозитории. Чтобы было интереснее, добавил статистику. Игрок знает, сколько он съел фруктов, призраков, конфет и прочее. Этого в оригинальной игре нет.

Вначале призраки двигались случайным образом. Затем я реализовал волновой алгоритм для поиска кратчайшего пути к цели. Получилось, что все четыре призрака бегут за «пакманом» по повторяющемуся маршруту. Это скучно и неинтересно. Тогда я написал сценарий, по которому призраки окружают героя. Красный всегда старается зайти сверху, синий — снизу, фиолетовый — слева и зеленый — справа.

По сути это искусственный интеллект для ботов. Мы начинаем обход карты от исходной точки. Каждая клетка получает порядковый номер шага. Таким образом, получается множество возможных маршрутов движения, один из которых приводит к цели — к «пакману». И тогда остается только пройти от цели к источнику по номерам шагов в обратном порядке и передать уже готовый маршрут боту. На GitHub лежит код алгоритма.

Графику практически всю нарисовал сам, потому что хотел попробовать. Это был мой первый опыт работы с векторной графикой, поэтому не судите строго. Вместо труб на карте изначально были просто стены, для отрисовки которых использовалась всего одна текстура. Поэтому захотел разнообразия в графике, но пугала сложность реализации заворотов, спаек и перекрестий из труб. Однако оказалось, что требуется изменить всего пару строк.

Если не хотите рисовать сами, есть множество бесплатных assets. Для текстуры пола и фруктов я использовал готовые наборы с портала OpenGameArt. Там же взял и звуки. Музыку скачал с Playonloop.

Комментарий Александра Фисунова

Во время обучения Дмитрий показал себя самостоятельным и работоспособным студентом. На курсе студенты выбрали для разработки игру Pac-Man. К последнему занятию ее основные элементы были готовы, но проект еще нельзя было назвать полноценной игрой. Необходимо было добавить контента и все отполировать, чем Дмитрий и занялся после курса. Я считаю, что у него отлично получилось и игра вышла достойной.

Публикация

Насколько мне известно, я единственный в группе, кто разместил игру в Google Play. Одногруппники сказали, что нет смысла тратить деньги на регистрацию в магазине приложений, если профита не получить. Но мне интересно было попробовать — ради опыта. Хотел пополнить портфолио первой разработкой, потому что знал, что во многих вакансиях требуют наличие приложения в Google Play. Кроме этого, проект был практически готовый. Я оплатил взнос в 25 долларов при регистрации и получил статус разработчика.

В начале загрузок было мало — скачали только друзья и знакомые. Это примерно 5–10 загрузок в день. Потом количество стало подниматься скачками и доросло до 4–5 тысяч ежедневно. По статистике, в основном игру скачивают пользователи из США, Турции и Индии, потому что весь интерфейс на английском. В России загрузок гораздо меньше, хотя есть локализованная версия.

Модерация в Google Play удивила. Сложилось ощущение, что объективности нет, и многое зависит от настроения ревьюера. Первоначальная модерация прошла без проблем. Но когда я через неделю загрузил обновление, игру заблокировали. Причиной указали рекламу «для взрослых», хотя ничего подобного там нет. После апелляционного разбирательства игру разбанили, но, как оказалось впоследствии, ненадолго.

Продвижение

Почему так много было загрузок — не знаю точно, могу только предполагать. На мой взгляд, этому способствовали четыре причины.

Интересная реализация. Сейчас в Google Play примерно 80 вариантов Pac-Man. На первом месте рейтинга стоит оригинальная версия от компании Namco — такая же, как была на игровых автоматах. У нее одна карта и 256 уровней. Большое количество других «пакманов» имеют похожую реализацию: та же карта, текстура и логика. Кроме этого, в них встречается некачественная графика, баги, неудобное управление. Поэтому в основном пользователи вынуждены выбирать между классической игрой и некачественными проектами. Я разработал новую версию игры и дополнил ее картами и статистикой. Это привлекало пользователей, которые любят Pac-Man, но хотят новых вариантов.

Описание сделал простое, без лишних слов и выражений, но оно все равно отличается от других. Многие игры и приложения разработчики сопровождают описаниями для роботов: смысла мало, ключевых слов много. Когда читаешь, не разберешь, о чем вообще идет речь. Мое описание — простое: поймет даже ребенок.

Общение с пользователями. На отзывы отвечал быстро, потому что разработчик сразу получает уведомление об их добавлении. Сначала пользователи чаще всего спрашивали об управлении. Когда загрузил обновление, подобные вопросы прекратились. Еще заметил, что нет средних оценок. Пользователи ставят либо пять звезд, либо одну. Так же пишут: или «все хорошо», или «это ужасно».

Обновление. Изначально я писал игру под десктоп, поэтому логика управления движением персонажа была ориентирована под клавиатуру. Когда портировал проект на Android, не учел, что с телефона будет неудобно управлять «пакманом». В результате через неделю пришлось переделать логику и выпустить первое обновление.

Бан

Пару недель назад мои грезы о миллионах установок натолкнулись на суровую реальность. Хейтеры накидали жалоб за нарушение авторских прав, и игру заблокировали. Я получил вот такое сообщение:

В ответ подготовил апелляцию, через пару дней пришел ответ. Согласно правилам Google Play, я не имел права использовать название Pac-Man для игры.

Чтобы не словить бан, стоит пять раз подумать, прежде чем приступать к созданию продукта, связанного с зарегистрированной торговой маркой. В моем случае нужно было избегать упоминания бренда Pac-Man.

Комментарий Александра Фисунова

Причиной блокировки, как мне кажется, стало то, что проект набрал большое количество скачиваний в Play Market. Дмитрий использовал в названии известную торговую марку Pac-Man, чем и привлек внимание правообладателей. Чтобы этого избежать, необходимо было либо изменить название, либо связаться с владельцами ТМ   — BANDAI NAMCO ENTERTAINMENT INC. Но тогда для реализации требовался бы совсем другой уровень проработки проекта и целая команда разработчиков.

Дмитрий провел отличную работу по написанию игры. Надеюсь, что его новые проекты наберут еще больше скачиваний, чем первая версия Pac-Man. Однако помните, что изучать программирование на основе известных продуктов можно, но использовать в названии чужую торговую марку нельзя.

Что в итоге

Я переименовал игру в Waka-Man. Надеюсь, она повторит успех предыдущей. По мере сил и времени буду дорабатывать функционал, потому что приложение   мне нравится, и я хочу, чтобы пользователи с удовольствием в нем играли.

Когда получил бан, сначала недоумевал, почему так получилось — я ведь столько раз прошел модерацию. Потом разобрался в ситуации и понял, в чем заключалась проблема и как избегать подобного в дальнейшем. Было бы обидно, если бы вкладывал деньги в продвижение, но в данном случае я ничего не потерял.

В целом я доволен опытом и получившейся игрушкой. Не наступайте на мои грабли, если разрабатываете крутые версии старых аналогов. Буду рад обратной связи от сообщества GeekBrains! Если хотите покритиковать или улучшить игру, пишите в комментариях.

Пройти обучение

25 июл 18, 12:27
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 8

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru